# 属性装饰器 理解一下

class DummyAttribute:
    pass


def abstract_attribute(obj=None):
    print("***************")
    if obj is None:
        obj = DummyAttribute()
    obj.__is_abstract_attribute__ = True
    return obj

@abstract_attribute
def test():
    return "aa"

print(type(test()))

#
# class AbstractFoo():
#     def __init__(self):
#         pass
#
#     @abstract_attribute
#     def bar(self):
#         print("111111111111111111")
#         pass
#
#     def print(self):
#         print(self.bar)
#
#
# class Foo(AbstractFoo):
#     def __init__(self):
#         super().__init__()
#         print("2222222222222222222")
#         self.bar = 3
#
#
#
# Foo().print()
